library("FRESA.CAD")
library(survival)
library(readxl)
library(igraph)
op <- par(no.readonly = TRUE)
pander::panderOptions('digits', 3)
pander::panderOptions('table.split.table', 400)
pander::panderOptions('keep.trailing.zeros',TRUE)
TADPOLE_D1_D2 <- read.csv("./Data/TADPOLE/TADPOLE_D1_D2.csv")
TADPOLE_D1_D2_Dict <- read.csv("./Data/TADPOLE/TADPOLE_D1_D2_Dict.csv")
TADPOLE_D1_D2_Dict_LR <- as.data.frame(read_excel("./Data/TADPOLE/TADPOLE_D1_D2_Dict_LR.xlsx",sheet = "LeftRightFeatures"))
rownames(TADPOLE_D1_D2_Dict) <- TADPOLE_D1_D2_Dict$FLDNAME
# mm3 to mm
isVolume <- c("Ventricles","Hippocampus","WholeBrain","Entorhinal","Fusiform","MidTemp","ICV",
TADPOLE_D1_D2_Dict$FLDNAME[str_detect(TADPOLE_D1_D2_Dict$TEXT,"Volume")]
)
#TADPOLE_D1_D2[,isVolume] <- apply(TADPOLE_D1_D2[,isVolume],2,'^',(1/3))
TADPOLE_D1_D2[,isVolume] <- TADPOLE_D1_D2[,isVolume]^(1/3)
# mm2 to mm
isArea <- TADPOLE_D1_D2_Dict$FLDNAME[str_detect(TADPOLE_D1_D2_Dict$TEXT,"Area")]
TADPOLE_D1_D2[,isArea] <- sqrt(TADPOLE_D1_D2[,isArea])
# Get only cross sectional measurements
FreeSurfersetCross <- str_detect(colnames(TADPOLE_D1_D2),"UCSFFSX")
# The subset of baseline measurements
baselineTadpole <- subset(TADPOLE_D1_D2,VISCODE=="bl")
table(baselineTadpole$DX)
Dementia Dementia to MCI MCI MCI to Dementia
7 336 1 864 5
MCI to NL NL NL to MCI
2 521 1
rownames(baselineTadpole) <- baselineTadpole$PTID
validBaselineTadpole <- cbind(DX=baselineTadpole$DX,
AGE=baselineTadpole$AGE,
Gender=1*(baselineTadpole$PTGENDER=="Female"),
ADAS11=baselineTadpole$ADAS11,
ADAS13=baselineTadpole$ADAS13,
MMSE=baselineTadpole$MMSE,
RAVLT_immediate=baselineTadpole$RAVLT_immediate,
RAVLT_learning=baselineTadpole$RAVLT_learning,
RAVLT_forgetting=baselineTadpole$RAVLT_forgetting,
RAVLT_perc_forgetting=baselineTadpole$RAVLT_perc_forgetting,
FAQ=baselineTadpole$FAQ,
APOE4=1*(as.numeric(baselineTadpole$APOE4)>0),
Ventricles=baselineTadpole$Ventricles,
Hippocampus=baselineTadpole$Hippocampus,
WholeBrain=baselineTadpole$WholeBrain,
Entorhinal=baselineTadpole$Entorhinal,
Fusiform=baselineTadpole$Fusiform,
MidTemp=baselineTadpole$MidTemp,
ICV=baselineTadpole$ICV,
ABETA=as.numeric(baselineTadpole$ABETA_UPENNBIOMK9_04_19_17),
TAU=as.numeric(baselineTadpole$TAU_UPENNBIOMK9_04_19_17),
PTAU=as.numeric(baselineTadpole$PTAU_UPENNBIOMK9_04_19_17),
baselineTadpole[,FreeSurfersetCross])
pander::pander(summary(validBaselineTadpole$APOE4))
| Min. | 1st Qu. | Median | Mean | 3rd Qu. | Max. | NA’s |
|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0.469 | 1 | 1 | 12 |
pander::pander(summary(validBaselineTadpole$ABETA))
| Min. | 1st Qu. | Median | Mean | 3rd Qu. | Max. | NA’s |
|---|---|---|---|---|---|---|
| 203 | 596 | 854 | 1053 | 1396 | 3592 | 523 |
pander::pander(summary(validBaselineTadpole$TAU))
| Min. | 1st Qu. | Median | Mean | 3rd Qu. | Max. | NA’s |
|---|---|---|---|---|---|---|
| 81.5 | 194 | 258 | 287 | 350 | 852 | 527 |
pander::pander(summary(validBaselineTadpole$PTAU))
| Min. | 1st Qu. | Median | Mean | 3rd Qu. | Max. | NA’s |
|---|---|---|---|---|---|---|
| 8.21 | 17.4 | 24.2 | 27.6 | 34 | 103 | 528 |
LeftFields <- TADPOLE_D1_D2_Dict_LR$LFN
names(LeftFields) <- LeftFields
LeftFields <- LeftFields[LeftFields %in% colnames(validBaselineTadpole)]
RightFields <- TADPOLE_D1_D2_Dict_LR$RFN
names(RightFields) <- RightFields
RightFields <- RightFields[RightFields %in% colnames(validBaselineTadpole)]
## Normalize to ICV
validBaselineTadpole$Ventricles=validBaselineTadpole$Ventricles/validBaselineTadpole$ICV
validBaselineTadpole$Hippocampus=validBaselineTadpole$Hippocampus/validBaselineTadpole$ICV
validBaselineTadpole$WholeBrain=validBaselineTadpole$WholeBrain/validBaselineTadpole$ICV
validBaselineTadpole$Entorhinal=validBaselineTadpole$Entorhinal/validBaselineTadpole$ICV
validBaselineTadpole$Fusiform=validBaselineTadpole$Fusiform/validBaselineTadpole$ICV
validBaselineTadpole$MidTemp=validBaselineTadpole$MidTemp/validBaselineTadpole$ICV
leftData <- validBaselineTadpole[,LeftFields]/validBaselineTadpole$ICV
RightData <- validBaselineTadpole[,RightFields]/validBaselineTadpole$ICV
## get mean and relative difference
meanLeftRight <- (leftData + RightData)/2
difLeftRight <- abs(leftData - RightData)
reldifLeftRight <- difLeftRight/meanLeftRight
colnames(meanLeftRight) <- paste("M",colnames(meanLeftRight),sep="_")
colnames(difLeftRight) <- paste("D",colnames(difLeftRight),sep="_")
colnames(reldifLeftRight) <- paste("RD",colnames(reldifLeftRight),sep="_")
validBaselineTadpole <- validBaselineTadpole[,!(colnames(validBaselineTadpole) %in%
c(LeftFields,RightFields))]
validBaselineTadpole <- cbind(validBaselineTadpole,meanLeftRight,reldifLeftRight)
## Remove columns with too many NA more than %35 of NA
nacount <- apply(is.na(validBaselineTadpole),2,sum)/nrow(validBaselineTadpole) < 0.35
diagnose <- validBaselineTadpole$DX
pander::pander(table(diagnose))
| Dementia | Dementia to MCI | MCI | MCI to Dementia | MCI to NL | NL | NL to MCI | |
|---|---|---|---|---|---|---|---|
| 7 | 336 | 1 | 864 | 5 | 2 | 521 | 1 |
validBaselineTadpole <- validBaselineTadpole[,nacount]
## Remove character columns
ischar <- sapply(validBaselineTadpole,class) == "character"
validBaselineTadpole <- validBaselineTadpole[,!ischar]
## Place back diagnose
validBaselineTadpole$DX <- diagnose
pander::pander(summary(validBaselineTadpole$APOE4))
| Min. | 1st Qu. | Median | Mean | 3rd Qu. | Max. | NA’s |
|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0.469 | 1 | 1 | 12 |
pander::pander(summary(validBaselineTadpole$ABETA))
| Min. | 1st Qu. | Median | Mean | 3rd Qu. | Max. | NA’s |
|---|---|---|---|---|---|---|
| 203 | 596 | 854 | 1053 | 1396 | 3592 | 523 |
pander::pander(summary(validBaselineTadpole$TAU))
| Min. | 1st Qu. | Median | Mean | 3rd Qu. | Max. | NA’s |
|---|---|---|---|---|---|---|
| 81.5 | 194 | 258 | 287 | 350 | 852 | 527 |
pander::pander(summary(validBaselineTadpole$PTAU))
| Min. | 1st Qu. | Median | Mean | 3rd Qu. | Max. | NA’s |
|---|---|---|---|---|---|---|
| 8.21 | 17.4 | 24.2 | 27.6 | 34 | 103 | 528 |
validBaselineTadpole <- validBaselineTadpole[complete.cases(validBaselineTadpole),]
ischar <- sapply(validBaselineTadpole,class) == "character"
validBaselineTadpole[,!ischar] <- sapply(validBaselineTadpole[,!ischar],as.numeric)
pander::pander(summary(validBaselineTadpole$APOE4))
| Min. | 1st Qu. | Median | Mean | 3rd Qu. | Max. |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0.454 | 1 | 1 |
pander::pander(summary(validBaselineTadpole$ABETA))
| Min. | 1st Qu. | Median | Mean | 3rd Qu. | Max. |
|---|---|---|---|---|---|
| 203 | 623 | 874 | 1078 | 1427 | 3592 |
pander::pander(summary(validBaselineTadpole$TAU))
| Min. | 1st Qu. | Median | Mean | 3rd Qu. | Max. |
|---|---|---|---|---|---|
| 97.9 | 191 | 255 | 284 | 349 | 852 |
pander::pander(summary(validBaselineTadpole$PTAU))
| Min. | 1st Qu. | Median | Mean | 3rd Qu. | Max. |
|---|---|---|---|---|---|
| 8.21 | 17.1 | 23.8 | 27.3 | 33.9 | 103 |
colnames(validBaselineTadpole) <- str_remove_all(colnames(validBaselineTadpole),"_UCSFFSX_11_02_15_UCSFFSX51_08_01_16")
colnames(validBaselineTadpole) <- str_replace_all(colnames(validBaselineTadpole)," ","_")
validBaselineTadpole$LONISID <- NULL
validBaselineTadpole$IMAGEUID <- NULL
validBaselineTadpole$LONIUID <- NULL
diagnose <- as.character(validBaselineTadpole$DX)
validBaselineTadpole$DX <- diagnose
pander::pander(table(validBaselineTadpole$DX))
| Dementia | Dementia to MCI | MCI | MCI to NL | NL | NL to MCI |
|---|---|---|---|---|---|
| 154 | 1 | 478 | 1 | 302 | 1 |
validDX <- c("NL","MCI","Dementia")
validBaselineTadpole <- validBaselineTadpole[validBaselineTadpole$DX %in% validDX,]
validBaselineTadpole$DX <- as.factor(validBaselineTadpole$DX)
pander::pander(table(validBaselineTadpole$DX))
| Dementia | MCI | NL |
|---|---|---|
| 154 | 478 | 302 |
The heat map of the testing set.
cormat <- cor(validBaselineTadpole[,colnames(validBaselineTadpole) != "DX"],method="spearman")
diag(cormat) <- 0;
corrmax <- apply(cormat,2,max)
whomax <- colnames(cormat)[corrmax>0.75]
gplots::heatmap.2(abs(cormat[whomax,whomax]),
trace = "none",
scale = "none",
mar = c(10,10),
col=rev(heat.colors(5)),
main = "Baseline TADPOLE Correlation",
cexRow = 0.5,
cexCol = 0.5,
key.title=NA,
key.xlab="Spearman Correlation",
xlab="Feature", ylab="Feature")
par(op)
subjectsID <- rownames(validBaselineTadpole)
visitsID <- unique(TADPOLE_D1_D2$VISCODE)
baseDx <- TADPOLE_D1_D2[TADPOLE_D1_D2$VISCODE=="bl",c("PTID","DX","EXAMDATE")]
rownames(baseDx) <- baseDx$PTID
baseDx <- baseDx[subjectsID,]
lastDx <- baseDx
toDementia <- baseDx
table(lastDx$DX)
Dementia MCI NL 154 478 302
hasDementia <- lastDx$PTID[str_detect(lastDx$DX,"Dementia")]
for (vid in visitsID)
{
DxValue <- TADPOLE_D1_D2[TADPOLE_D1_D2$VISCODE==vid,c("PTID","DX","EXAMDATE")]
rownames(DxValue) <- DxValue$PTID
DxValue <- DxValue[DxValue$PTID %in% subjectsID,]
noDX <- DxValue$PTID[nchar(DxValue$DX) < 1]
print(length(noDX))
DxValue[noDX,] <- lastDx[noDX,]
inLast <- lastDx$PTID[lastDx$PTID %in% DxValue$PTID]
print(length(inLast))
lastDx[inLast,] <- DxValue[inLast,]
noDementia <- !(toDementia$PTID %in% hasDementia)
toDementia[noDementia,] <- lastDx[noDementia,]
hasDementia <- unique(c(hasDementia,lastDx$PTID[str_detect(lastDx$DX,"Dementia")]))
}
[1] 0 [1] 934 [1] 2 [1] 889 [1] 5 [1] 818 [1] 19 [1] 741 [1] 573 [1] 695 [1] 23 [1] 465 [1] 10 [1] 106 [1] 8 [1] 81 [1] 26 [1] 389 [1] 20 [1] 178 [1] 9 [1] 64 [1] 556 [1] 556 [1] 56 [1] 56 [1] 87 [1] 87 [1] 87 [1] 87 [1] 389 [1] 389 [1] 143 [1] 143 [1] 77 [1] 77 [1] 4 [1] 4 [1] 7 [1] 47 [1] 6 [1] 34 [1] 0 [1] 0
table(lastDx$DX)
Dementia Dementia to MCI MCI MCI to Dementia MCI to NL
273 2 315 46 6
NL NL to MCI
275 17
baseMCI <-baseDx$PTID[baseDx$DX == "MCI"]
lastDementia <- lastDx$PTID[str_detect(lastDx$DX,"Dementia")]
lastDementia2 <- toDementia$PTID[str_detect(toDementia$DX,"Dementia")]
lastNL <- lastDx$PTID[str_detect(lastDx$DX,"NL")]
MCIatBaseline <- baseDx[baseMCI,]
MCIatEvent <- toDementia[baseMCI,]
MCIatLast <- lastDx[baseMCI,]
MCIconverters <- MCIatBaseline[baseMCI %in% lastDementia,]
MCI_No_converters <- MCIatBaseline[!(baseMCI %in% MCIconverters$PTID),]
MCIconverters$TimeToEvent <- (as.Date(toDementia[MCIconverters$PTID,"EXAMDATE"])
- as.Date(MCIconverters$EXAMDATE))
sum(MCIconverters$TimeToEvent ==0)
[1] 0
MCIconverters$AtEventDX <- MCIatEvent[MCIconverters$PTID,"DX"]
MCIconverters$LastDX <- MCIatLast[MCIconverters$PTID,"DX"]
MCI_No_converters$TimeToEvent <- (as.Date(lastDx[MCI_No_converters$PTID,"EXAMDATE"])
- as.Date(MCI_No_converters$EXAMDATE))
MCI_No_converters$LastDX <- MCIatLast[MCI_No_converters$PTID,"DX"]
MCI_No_converters <- subset(MCI_No_converters,TimeToEvent > 0)
TrainFraction <- 0.60;
MCIPrognosisIDs <- c(MCIconverters$PTID,MCI_No_converters$PTID)
TADPOLECrossMRI <- validBaselineTadpole[MCIPrognosisIDs,]
table(TADPOLECrossMRI$DX)
Dementia MCI NL 0 461 0
TADPOLECrossMRI$DX <- NULL
TADPOLECrossMRI$status <- 1*(rownames(TADPOLECrossMRI) %in% MCIconverters$PTID)
table(TADPOLECrossMRI$status)
0 1 307 154
TADPOLECrossMRI$TimeToEvent <- numeric(nrow(TADPOLECrossMRI))
TADPOLECrossMRI[MCIconverters$PTID,"TimeToEvent"] <- MCIconverters$TimeToEvent
TADPOLECrossMRI[MCI_No_converters$PTID,"TimeToEvent"] <- MCI_No_converters$TimeToEvent
TADPOLE_Cases <- subset(TADPOLECrossMRI,status==1)
TADPOLE_Controls <- subset(TADPOLECrossMRI,status==0)
trainCasesSet <- sample(nrow(TADPOLE_Cases),nrow(TADPOLE_Cases)*TrainFraction)
trainControlSet <- sample(nrow(TADPOLE_Controls),nrow(TADPOLE_Controls)*TrainFraction)
TADPOLE_Conv_TRAIN <- rbind(TADPOLE_Cases[trainCasesSet,],TADPOLE_Controls[trainControlSet,])
TADPOLE_Conv_TEST <- TADPOLECrossMRI[!(rownames(TADPOLECrossMRI) %in%
rownames(TADPOLE_Conv_TRAIN)),]
pander::pander(table(TADPOLE_Conv_TRAIN$status))
| 0 | 1 |
|---|---|
| 184 | 92 |
pander::pander(table(TADPOLE_Conv_TEST$status))
| 0 | 1 |
|---|---|
| 123 | 62 |
par(op)
bConvml <- BSWiMS.model(Surv(TimeToEvent,status)~1,TADPOLE_Conv_TRAIN,NumberofRepeats = 20)
[+++++-+++++–++++++-+++++-+++++-++++-++++-++++-+++++-++++-++++-++++-+++-++++-++++–+++++-++++–+++++-+++++-++++-]…………….
pander::pander(bConvml$bagging$Jaccard.SM)
0.12
fs <- bConvml$bagging$frequencyTable
barplot(fs[order(-fs)],las=2,main="Selected Features",cex.names = 0.5)
sm <- summary(bConvml)
pander::pander(sm$coefficients)
| Estimate | lower | HR | upper | u.Accuracy | r.Accuracy | full.Accuracy | u.AUC | r.AUC | full.AUC | IDI | NRI | z.IDI | z.NRI | Delta.AUC | Frequency | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| RAVLT_immediate | -2.23e-02 | 9.78e-01 | 9.78e-01 | 9.78e-01 | 0.659 | 0.708 | 0.741 | 0.696 | 0.750 | 0.784 | 0.1027 | 0.836 | 6.29 | 7.76 | 0.034439 | 1.00 |
| TAU | 1.78e-03 | 1.00e+00 | 1.00e+00 | 1.00e+00 | 0.685 | 0.696 | 0.726 | 0.674 | 0.724 | 0.755 | 0.0781 | 0.617 | 5.11 | 5.08 | 0.030564 | 0.85 |
| ADAS13 | 8.60e-03 | 1.01e+00 | 1.01e+00 | 1.01e+00 | 0.707 | 0.699 | 0.736 | 0.720 | 0.726 | 0.750 | 0.0891 | 0.630 | 4.89 | 5.24 | 0.024457 | 1.00 |
| RD_ST47TA | -1.02e+00 | 3.61e-01 | 3.61e-01 | 3.61e-01 | 0.507 | 0.739 | 0.746 | 0.541 | 0.774 | 0.780 | 0.0272 | 0.457 | 4.58 | 3.88 | 0.005435 | 0.25 |
| M_ST39SA | -1.57e+00 | 2.07e-01 | 2.07e-01 | 2.07e-01 | 0.674 | 0.710 | 0.750 | 0.668 | 0.758 | 0.796 | 0.0272 | 0.620 | 4.49 | 5.09 | 0.038043 | 0.25 |
| ADAS11 | 3.74e-02 | 1.04e+00 | 1.04e+00 | 1.04e+00 | 0.692 | 0.757 | 0.763 | 0.698 | 0.782 | 0.785 | 0.0536 | 0.511 | 4.40 | 4.14 | 0.003458 | 1.00 |
| M_ST40CV | -3.39e+00 | 3.36e-02 | 3.36e-02 | 3.36e-02 | 0.645 | 0.717 | 0.717 | 0.655 | 0.736 | 0.745 | 0.0437 | 0.533 | 4.33 | 4.38 | 0.008152 | 0.05 |
| ABETA | -2.84e-04 | 1.00e+00 | 1.00e+00 | 1.00e+00 | 0.638 | 0.739 | 0.741 | 0.701 | 0.775 | 0.784 | 0.0502 | 0.724 | 4.32 | 7.05 | 0.009811 | 1.00 |
| M_ST12SV | -1.37e+01 | 1.08e-06 | 1.08e-06 | 1.08e-06 | 0.670 | 0.676 | 0.711 | 0.679 | 0.700 | 0.737 | 0.0313 | 0.518 | 4.31 | 4.27 | 0.036408 | 0.75 |
| FAQ | 5.98e-02 | 1.06e+00 | 1.06e+00 | 1.06e+00 | 0.688 | 0.736 | 0.752 | 0.658 | 0.769 | 0.786 | 0.0502 | 0.606 | 4.31 | 5.00 | 0.017355 | 1.00 |
| M_ST30SV | 6.91e+00 | 1.00e+03 | 1.00e+03 | 1.00e+03 | 0.609 | 0.703 | 0.703 | 0.620 | 0.736 | 0.728 | 0.0629 | 0.609 | 4.21 | 5.10 | -0.008152 | 0.20 |
| M_ST11SV | -2.99e-10 | 1.00e+00 | 1.00e+00 | 1.00e+00 | 0.580 | 0.714 | 0.699 | 0.590 | 0.731 | 0.720 | 0.0496 | 0.380 | 4.04 | 3.07 | -0.010870 | 0.05 |
| M_ST58CV | -7.26e+00 | 7.05e-04 | 7.05e-04 | 7.05e-04 | 0.670 | 0.764 | 0.764 | 0.685 | 0.788 | 0.788 | 0.0235 | 0.391 | 4.03 | 3.14 | 0.000000 | 0.05 |
| M_ST56CV | -7.12e+00 | 8.08e-04 | 8.08e-04 | 8.08e-04 | 0.638 | 0.721 | 0.746 | 0.644 | 0.755 | 0.780 | 0.0279 | 0.304 | 3.94 | 2.43 | 0.024457 | 0.80 |
| Entorhinal | -4.39e+00 | 1.24e-02 | 1.24e-02 | 1.24e-02 | 0.645 | 0.674 | 0.717 | 0.649 | 0.712 | 0.745 | 0.0471 | 0.500 | 3.74 | 4.08 | 0.032609 | 0.90 |
| APOE4 | 4.07e-01 | 1.50e+00 | 1.50e+00 | 1.50e+00 | 0.638 | 0.745 | 0.750 | 0.649 | 0.772 | 0.776 | 0.0404 | 0.589 | 3.70 | 4.88 | 0.004041 | 1.00 |
| RD_ST59TS | -1.88e-01 | 8.28e-01 | 8.28e-01 | 8.28e-01 | 0.533 | 0.721 | 0.717 | 0.571 | 0.747 | 0.745 | 0.0156 | 0.326 | 3.66 | 2.72 | -0.002717 | 0.15 |
| RD_ST44TS | -1.53e+00 | 2.16e-01 | 2.16e-01 | 2.16e-01 | 0.518 | 0.746 | 0.751 | 0.549 | 0.772 | 0.779 | 0.0255 | 0.423 | 3.60 | 3.56 | 0.007418 | 0.50 |
| M_ST29SV | -1.19e+01 | 6.99e-06 | 6.99e-06 | 6.99e-06 | 0.656 | 0.743 | 0.746 | 0.679 | 0.777 | 0.780 | 0.0414 | 0.522 | 3.56 | 4.27 | 0.002717 | 0.75 |
| M_ST56SA | -4.59e+00 | 1.02e-02 | 1.02e-02 | 1.02e-02 | 0.598 | 0.748 | 0.758 | 0.606 | 0.768 | 0.780 | 0.0294 | 0.377 | 3.46 | 3.03 | 0.011025 | 1.00 |
| RAVLT_perc_forgetting | 6.87e-04 | 1.00e+00 | 1.00e+00 | 1.00e+00 | 0.652 | 0.751 | 0.764 | 0.674 | 0.770 | 0.784 | 0.0264 | 0.546 | 3.45 | 4.53 | 0.014608 | 1.00 |
| PTAU | 6.38e-04 | 1.00e+00 | 1.00e+00 | 1.00e+00 | 0.707 | 0.750 | 0.754 | 0.690 | 0.772 | 0.769 | 0.0213 | 0.446 | 3.45 | 3.58 | -0.002717 | 0.95 |
| M_ST40SA | -1.32e-10 | 1.00e+00 | 1.00e+00 | 1.00e+00 | 0.638 | 0.694 | 0.712 | 0.644 | 0.731 | 0.749 | 0.0246 | 0.522 | 3.43 | 4.25 | 0.018003 | 0.80 |
| MMSE | -6.19e-02 | 9.40e-01 | 9.40e-01 | 9.40e-01 | 0.692 | 0.763 | 0.763 | 0.660 | 0.786 | 0.785 | 0.0279 | 0.514 | 3.39 | 4.15 | -0.000989 | 0.80 |
| RD_ST34SA | -3.12e+00 | 4.43e-02 | 4.43e-02 | 4.43e-02 | 0.511 | 0.714 | 0.723 | 0.535 | 0.750 | 0.752 | 0.0316 | 0.360 | 3.39 | 2.93 | 0.002070 | 0.20 |
| RD_ST34CV | -1.47e+00 | 2.31e-01 | 2.31e-01 | 2.31e-01 | 0.504 | 0.710 | 0.750 | 0.522 | 0.761 | 0.796 | 0.0301 | 0.511 | 3.34 | 4.31 | 0.035326 | 0.15 |
| RD_ST49CV | -3.97e-01 | 6.72e-01 | 6.72e-01 | 6.72e-01 | 0.536 | 0.761 | 0.754 | 0.573 | 0.777 | 0.769 | 0.0213 | 0.500 | 3.34 | 4.22 | -0.008152 | 0.10 |
| M_ST15SA | -7.90e-12 | 1.00e+00 | 1.00e+00 | 1.00e+00 | 0.533 | 0.725 | 0.725 | 0.533 | 0.753 | 0.761 | 0.0261 | 0.446 | 3.30 | 3.59 | 0.008152 | 0.05 |
| RD_ST26TA | 1.48e+00 | 4.38e+00 | 4.38e+00 | 4.38e+00 | 0.601 | 0.754 | 0.750 | 0.576 | 0.769 | 0.766 | 0.0301 | 0.272 | 3.14 | 2.19 | -0.002830 | 1.00 |
| Hippocampus | -2.31e+00 | 9.95e-02 | 9.95e-02 | 9.95e-02 | 0.652 | 0.707 | 0.717 | 0.674 | 0.726 | 0.745 | 0.0216 | 0.228 | 3.12 | 1.80 | 0.019022 | 0.20 |
| M_ST60CV | 4.05e+00 | 5.76e+01 | 5.76e+01 | 5.76e+01 | 0.554 | 0.699 | 0.717 | 0.552 | 0.720 | 0.745 | 0.0304 | 0.380 | 3.12 | 3.04 | 0.024457 | 0.05 |
| RD_ST46SA | -9.12e-01 | 4.02e-01 | 4.02e-01 | 4.02e-01 | 0.558 | 0.721 | 0.746 | 0.579 | 0.755 | 0.780 | 0.0230 | 0.457 | 3.08 | 3.80 | 0.024457 | 0.35 |
| RD_ST24SA | 3.86e-01 | 1.47e+00 | 1.47e+00 | 1.47e+00 | 0.576 | 0.707 | 0.703 | 0.557 | 0.731 | 0.728 | 0.0116 | 0.359 | 3.06 | 2.85 | -0.002717 | 0.10 |
| M_ST58SA | -2.42e-11 | 1.00e+00 | 1.00e+00 | 1.00e+00 | 0.565 | 0.729 | 0.743 | 0.557 | 0.757 | 0.764 | 0.0194 | 0.210 | 3.03 | 1.66 | 0.006341 | 0.15 |
| RD_ST55TS | -2.69e+00 | 6.82e-02 | 6.82e-02 | 6.82e-02 | 0.500 | 0.710 | 0.726 | 0.533 | 0.735 | 0.755 | 0.0214 | 0.256 | 3.03 | 2.09 | 0.019866 | 0.60 |
| M_ST49SA | -6.71e-12 | 1.00e+00 | 1.00e+00 | 1.00e+00 | 0.547 | 0.707 | 0.707 | 0.560 | 0.731 | 0.734 | 0.0204 | 0.217 | 3.02 | 1.72 | 0.002717 | 0.05 |
| M_ST24SA | -2.72e-11 | 1.00e+00 | 1.00e+00 | 1.00e+00 | 0.580 | 0.723 | 0.736 | 0.598 | 0.750 | 0.764 | 0.0235 | 0.386 | 3.01 | 3.12 | 0.013587 | 0.10 |
| RD_ST49TS | -3.45e-12 | 1.00e+00 | 1.00e+00 | 1.00e+00 | 0.489 | 0.674 | 0.688 | 0.527 | 0.696 | 0.715 | 0.0263 | 0.261 | 2.99 | 2.18 | 0.019022 | 0.05 |
| RD_ST56TA | 1.18e-11 | 1.00e+00 | 1.00e+00 | 1.00e+00 | 0.591 | 0.707 | 0.721 | 0.573 | 0.723 | 0.739 | 0.0337 | 0.315 | 2.98 | 2.50 | 0.016304 | 0.05 |
| RD_ST49SA | -3.57e-01 | 7.00e-01 | 7.00e-01 | 7.00e-01 | 0.507 | 0.742 | 0.764 | 0.535 | 0.763 | 0.784 | 0.0110 | 0.300 | 2.85 | 2.46 | 0.021404 | 0.45 |
| M_ST24CV | -1.28e+01 | 2.65e-06 | 2.65e-06 | 2.65e-06 | 0.649 | 0.724 | 0.736 | 0.652 | 0.759 | 0.765 | 0.0272 | 0.408 | 2.84 | 3.26 | 0.005356 | 0.95 |
| M_ST43TS | 2.57e+01 | 1.39e+11 | 1.39e+11 | 1.39e+11 | 0.543 | 0.710 | 0.717 | 0.546 | 0.736 | 0.745 | 0.0153 | 0.174 | 2.61 | 1.37 | 0.008152 | 0.05 |
pander::pander(bConvml$univariate[bConvml$selectedfeatures,])
| Name | RName | ZUni | |
|---|---|---|---|
| ADAS11 | ADAS11 | ADAS11 | 8.40 |
| ADAS13 | ADAS13 | ADAS13 | 8.89 |
| ABETA | ABETA | ABETA | 8.12 |
| RAVLT_immediate | RAVLT_immediate | RAVLT_immediate | 8.01 |
| RAVLT_perc_forgetting | RAVLT_perc_forgetting | RAVLT_perc_forgetting | 6.42 |
| APOE4 | APOE4 | APOE4 | 4.94 |
| RD_ST26TA | RD_ST26TA | RD_ST26TA | 3.58 |
| M_ST56SA | M_ST56SA | M_ST56SA | 5.03 |
| FAQ | FAQ | FAQ | 5.17 |
| PTAU | PTAU | PTAU | 5.60 |
| M_ST24CV | M_ST24CV | M_ST24CV | 6.26 |
| Entorhinal | Entorhinal | Entorhinal | 6.01 |
| TAU | TAU | TAU | 5.45 |
| M_ST56CV | M_ST56CV | M_ST56CV | 6.04 |
| MMSE | MMSE | MMSE | 5.41 |
| M_ST40SA | M_ST40SA | M_ST40SA | 5.63 |
| M_ST29SV | M_ST29SV | M_ST29SV | 6.74 |
| M_ST12SV | M_ST12SV | M_ST12SV | 6.73 |
| RD_ST55TS | RD_ST55TS | RD_ST55TS | 2.52 |
| RD_ST44TS | RD_ST44TS | RD_ST44TS | 2.30 |
| RD_ST49SA | RD_ST49SA | RD_ST49SA | 2.21 |
| RD_ST46SA | RD_ST46SA | RD_ST46SA | 2.73 |
| M_ST39SA | M_ST39SA | M_ST39SA | 5.69 |
| RD_ST47TA | RD_ST47TA | RD_ST47TA | 1.58 |
| Hippocampus | Hippocampus | Hippocampus | 6.59 |
| M_ST30SV | M_ST30SV | M_ST30SV | 5.13 |
| RD_ST34SA | RD_ST34SA | RD_ST34SA | 2.11 |
| M_ST58SA | M_ST58SA | M_ST58SA | 3.99 |
| RD_ST34CV | RD_ST34CV | RD_ST34CV | 1.29 |
| RD_ST59TS | RD_ST59TS | RD_ST59TS | 2.56 |
| M_ST24SA | M_ST24SA | M_ST24SA | 3.39 |
| RD_ST24SA | RD_ST24SA | RD_ST24SA | 1.66 |
| RD_ST49CV | RD_ST49CV | RD_ST49CV | 2.54 |
| M_ST40CV | M_ST40CV | M_ST40CV | 6.23 |
| RD_ST49TS | RD_ST49TS | RD_ST49TS | 2.11 |
| M_ST11SV | M_ST11SV | M_ST11SV | 4.45 |
| M_ST43TS | M_ST43TS | M_ST43TS | 1.73 |
| M_ST49SA | M_ST49SA | M_ST49SA | 2.42 |
| RD_ST56TA | RD_ST56TA | RD_ST56TA | 3.03 |
| M_ST15SA | M_ST15SA | M_ST15SA | 1.69 |
| M_ST58CV | M_ST58CV | M_ST58CV | 5.54 |
| M_ST60CV | M_ST60CV | M_ST60CV | 2.44 |
ptestl <- predict(bConvml,TADPOLE_Conv_TEST,type="lp")
boxplot(ptestl~TADPOLE_Conv_TEST$status)
ptestr <- predict(bConvml,TADPOLE_Conv_TEST,type="risk")
eventCases <- subset(TADPOLE_Conv_TEST,status==1)
plot(1.0/ptestr[rownames(eventCases)]~eventCases$TimeToEvent)
pander::pander(cor.test(eventCases$TimeToEvent,1.0/ptestr[rownames(eventCases)],method="spearman"))
| Test statistic | P value | Alternative hypothesis | rho |
|---|---|---|---|
| 28076 | 0.0208 * | two.sided | 0.293 |
perdsurv <- cbind(TADPOLE_Conv_TEST$TimeToEvent,
TADPOLE_Conv_TEST$status,
ptestl,
ptestr)
prSurv <- predictionStats_survival(perdsurv,"MCI to AD Conversion")
pander::pander(prSurv$CIRisk)
| median | lower | upper |
|---|---|---|
| 0.846 | 0.8 | 0.887 |
pander::pander(prSurv$CILp)
| median | lower | upper |
|---|---|---|
| 0.892 | 0.844 | 0.933 |
pander::pander(prSurv$spearmanCI)
| 50% | 2.5% | 97.5% |
|---|---|---|
| 0.291 | 0.0289 | 0.519 |
prBin <- predictionStats_binary(cbind(TADPOLE_Conv_TEST$status,ptestl),"MCI to AD Conversion")
pander::pander(prBin$aucs)
| est | lower | upper |
|---|---|---|
| 0.892 | 0.847 | 0.937 |
pander::pander(prBin$CM.analysis$tab)
| Outcome + | Outcome - | Total | |
|---|---|---|---|
| Test + | 55 | 37 | 92 |
| Test - | 7 | 86 | 93 |
| Total | 62 | 123 | 185 |
par(op)
cmax <- apply(bConvml$bagging$formulaNetwork,2,max)
cnames <- names(cmax[cmax>=0.25])
cmax <- cmax[cnames]
adma <- bConvml$bagging$formulaNetwork[cnames,cnames]
adma[adma<0.15] <- 0;
gr <- graph_from_adjacency_matrix(adma,mode = "undirected",diag = FALSE,weighted=TRUE)
gr$layout <- layout_with_fr
fc <- cluster_optimal(gr)
plot(fc, gr,
edge.width=5*E(gr)$weight,
vertex.size=20*cmax,
vertex.label.cex=0.75,
vertex.label.dist=0,
main="MCI to Dementia Conversion")
par(op)
clusterFeatures <- fc$names
tableMCI_to_Dem <- sm$coefficients[clusterFeatures,
c("Estimate",
"lower",
"HR",
"upper",
"full.AUC",
"Delta.AUC",
"z.IDI",
"Frequency")]
nugget <- fc$membership
names(nugget) <- clusterFeatures
tableMCI_to_Dem$Cluster <- nugget[rownames(tableMCI_to_Dem)]
rnames <- clusterFeatures[str_detect(clusterFeatures,"ST")]
frnames <- rnames
rnames <- str_replace_all(rnames,"M_","")
rnames <- str_replace_all(rnames,"RD_","")
rnames <- str_replace_all(rnames,"Ba_","")
rnames <- str_replace_all(rnames,"De_","")
description <- character()
for (ddet in c(1:length(rnames)))
{
description <- c(description,TADPOLE_D1_D2_Dict$TEXT[str_detect(TADPOLE_D1_D2_Dict$FLDNAME,rnames[ddet])][1])
}
names(description) <- frnames
tableMCI_to_Dem$Description <- description[rownames(tableMCI_to_Dem)]
pander::pander(tableMCI_to_Dem)
| Estimate | lower | HR | upper | full.AUC | Delta.AUC | z.IDI | Frequency | Cluster | Description | |
|---|---|---|---|---|---|---|---|---|---|---|
| ADAS11 | 3.74e-02 | 1.04e+00 | 1.04e+00 | 1.04e+00 | 0.785 | 0.003458 | 4.40 | 1.00 | 1 | NA |
| ADAS13 | 8.60e-03 | 1.01e+00 | 1.01e+00 | 1.01e+00 | 0.750 | 0.024457 | 4.89 | 1.00 | 2 | NA |
| ABETA | -2.84e-04 | 1.00e+00 | 1.00e+00 | 1.00e+00 | 0.784 | 0.009811 | 4.32 | 1.00 | 3 | NA |
| RAVLT_immediate | -2.23e-02 | 9.78e-01 | 9.78e-01 | 9.78e-01 | 0.784 | 0.034439 | 6.29 | 1.00 | 3 | NA |
| RAVLT_perc_forgetting | 6.87e-04 | 1.00e+00 | 1.00e+00 | 1.00e+00 | 0.784 | 0.014608 | 3.45 | 1.00 | 1 | NA |
| APOE4 | 4.07e-01 | 1.50e+00 | 1.50e+00 | 1.50e+00 | 0.776 | 0.004041 | 3.70 | 1.00 | 2 | NA |
| RD_ST26TA | 1.48e+00 | 4.38e+00 | 4.38e+00 | 4.38e+00 | 0.766 | -0.002830 | 3.14 | 1.00 | 1 | Cortical Thickness Average of LeftFusiform |
| M_ST56SA | -4.59e+00 | 1.02e-02 | 1.02e-02 | 1.02e-02 | 0.780 | 0.011025 | 3.46 | 1.00 | 1 | Surface Area of LeftSuperiorFrontal |
| FAQ | 5.98e-02 | 1.06e+00 | 1.06e+00 | 1.06e+00 | 0.786 | 0.017355 | 4.31 | 1.00 | 3 | NA |
| PTAU | 6.38e-04 | 1.00e+00 | 1.00e+00 | 1.00e+00 | 0.769 | -0.002717 | 3.45 | 0.95 | 4 | NA |
| M_ST24CV | -1.28e+01 | 2.65e-06 | 2.65e-06 | 2.65e-06 | 0.765 | 0.005356 | 2.84 | 0.95 | 3 | Volume (Cortical Parcellation) of LeftEntorhinal |
| Entorhinal | -4.39e+00 | 1.24e-02 | 1.24e-02 | 1.24e-02 | 0.745 | 0.032609 | 3.74 | 0.90 | 2 | NA |
| TAU | 1.78e-03 | 1.00e+00 | 1.00e+00 | 1.00e+00 | 0.755 | 0.030564 | 5.11 | 0.85 | 4 | NA |
| M_ST56CV | -7.12e+00 | 8.08e-04 | 8.08e-04 | 8.08e-04 | 0.780 | 0.024457 | 3.94 | 0.80 | 4 | Volume (Cortical Parcellation) of LeftSuperiorFrontal |
| MMSE | -6.19e-02 | 9.40e-01 | 9.40e-01 | 9.40e-01 | 0.785 | -0.000989 | 3.39 | 0.80 | 1 | NA |
| M_ST40SA | -1.32e-10 | 1.00e+00 | 1.00e+00 | 1.00e+00 | 0.749 | 0.018003 | 3.43 | 0.80 | 3 | Surface Area of LeftMiddleTemporal |
| M_ST29SV | -1.19e+01 | 6.99e-06 | 6.99e-06 | 6.99e-06 | 0.780 | 0.002717 | 3.56 | 0.75 | 4 | Volume (WM Parcellation) of LeftHippocampus |
| M_ST12SV | -1.37e+01 | 1.08e-06 | 1.08e-06 | 1.08e-06 | 0.737 | 0.036408 | 4.31 | 0.75 | 4 | Volume (WM Parcellation) of LeftAmygdala |
| RD_ST55TS | -2.69e+00 | 6.82e-02 | 6.82e-02 | 6.82e-02 | 0.755 | 0.019866 | 3.03 | 0.60 | 4 | Cortical Thickness Standard Deviation of LeftRostralMiddleFrontal |
| RD_ST44TS | -1.53e+00 | 2.16e-01 | 2.16e-01 | 2.16e-01 | 0.779 | 0.007418 | 3.60 | 0.50 | 4 | Cortical Thickness Standard Deviation of LeftParahippocampal |
| RD_ST49SA | -3.57e-01 | 7.00e-01 | 7.00e-01 | 7.00e-01 | 0.784 | 0.021404 | 2.85 | 0.45 | 1 | Surface Area of LeftPostcentral |
| RD_ST46SA | -9.12e-01 | 4.02e-01 | 4.02e-01 | 4.02e-01 | 0.780 | 0.024457 | 3.08 | 0.35 | 4 | Surface Area of LeftParsOrbitalis |
| M_ST39SA | -1.57e+00 | 2.07e-01 | 2.07e-01 | 2.07e-01 | 0.796 | 0.038043 | 4.49 | 0.25 | 4 | Surface Area of LeftMedialOrbitofrontal |
| RD_ST47TA | -1.02e+00 | 3.61e-01 | 3.61e-01 | 3.61e-01 | 0.780 | 0.005435 | 4.58 | 0.25 | 4 | Cortical Thickness Average of LeftParsTriangularis |
save.image("./TADPOLE_BSWIMS_Results.RData")